#include<iostream>
#include<vector>
using namespace std;
int ret=0;
int row[14];
int col[14];
int titlt[30];
int slant[30];
int n;
vector<int>path;

void dfs(int j)
{
	if(path.size()==n)
	{
		if(ret++<3)
		{
			for(auto&e:path)
			{
				cout<<e<<" ";
			}
			cout<<endl;
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(!row[j]&&!col[i]&&!titlt[i+j]&&!slant[i-j+15])
		{
			row[j]=col[i]=titlt[i+j]=slant[i-j+15]=true;
			path.push_back(i);
			dfs(j+1);
			row[j]=col[i]=titlt[i+j]=slant[i-j+15]=false;
			path.pop_back();
		}
	}
}

int main()
{
	cin>>n;
	dfs(1);
	cout<<ret<<endl;
}